using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

namespace JGSY.CMS.LowCode.Platform.Infrastructure.Configuration
{
    /// <summary>
    /// 启动性能优化配置
    /// </summary>
    public static class StartupOptimizations
    {
        /// <summary>
        /// 启动模式
        /// </summary>
        public enum StartupMode
        {
            Fast,      // 快速启动模式 - 最少服务
            Normal,    // 正常模式 - 标准服务
            Full       // 完整模式 - 所有服务
        }

        /// <summary>
        /// 获取启动模式
        /// </summary>
        public static StartupMode GetStartupMode(IConfiguration configuration)
        {
            var mode = configuration.GetValue<string>("Startup:Mode");
            return mode?.ToLower() switch
            {
                "fast" => StartupMode.Fast,
                "full" => StartupMode.Full,
                _ => StartupMode.Normal
            };
        }

        /// <summary>
        /// 是否启用快速启动
        /// </summary>
        public static bool IsFastStartupEnabled(IConfiguration configuration)
        {
            return GetStartupMode(configuration) == StartupMode.Fast;
        }

        /// <summary>
        /// 获取启动超时时间（毫秒）
        /// </summary>
        public static int GetStartupTimeout(IConfiguration configuration)
        {
            return configuration.GetValue<int>("Startup:TimeoutMs", 30000); // 默认30秒
        }
    }
}
